5316. Инвертировать бит

 

Даны целые числа a и k. Выведите число, которое получается из а инвертированием k-го бита.

 

Вход. В одной строке заданы два числа a и k (0 ≤ a ≤ 109).

 

Выход. Выведите число a с инвертированным k-ым битом.

 

Пример входа

Пример выхода

15 2

11

 

 

РЕШЕНИЕ

элементарная задача – битовые операции

 

Анализ алгоритма

Известно, что степень двойки можно вычислить сдвигом влево: 2k = 1 << k. Искомым результатом будет значение a XOR (1 << k).

 

Реализация алгоритма

Читаем входные данные. Вычисляем и выводим ответ.

 

scanf("%d %d",&a,&k);

a = a ^ (1 << k);

printf("%d\n",a);

 

Реализация алгоритма – bitset

 

#include <cstdio>

#include <bitset>

using namespace std;

 

int a, k, res;

bitset<32> bset;

 

int main()

{

  scanf("%d %d", &a, &k);

 

  bset = (bitset<32>)a;

  bset.flip(k);

  res = (int)bset.to_ulong();

 

  printf("%d\n", res);

  return 0;

}

 

Python реализация

 

a, k = map(int,input().split())

a = a ^ (1 << k)

print(a)